﻿using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using 旅游管理系统.Dtos;
using 旅游管理系统.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace 旅游管理系统.Profiles
{
    /// <summary>
    /// DTO 的自动数据映射
    /// </summary>
    public class TouristRouteProfile : Profile //继承AutoMapper的Profile父类
    {
        //映射机制就是在这个类中完成的
        //添加
        public TouristRouteProfile()
        {
            //创建由 TouristRoute 到 TouristRouteDto的映射关系

            CreateMap<TouristRoute, TouristRouteDto>()
                .ForMember(
                    dest => dest.Price,
                    opt => opt.MapFrom(src => src.OriginalPrice * (decimal)(src.DiscountPresent ?? 1)) // ?? 是进行一次判断，如果前面的值为空值输出 1，如果不为空时则输出前面本身的值
                    )
                .ForMember(
                    dest => dest.TravelDays,
                    opt => opt.MapFrom(src => src.TravelDays.ToString())
                    )
                .ForMember(
                    dest => dest.TripType,
                    opt => opt.MapFrom(opt => opt.TripType.ToString())
                    )
                .ForMember(
                    dest => dest.DepartureCity,
                    opt => opt.MapFrom(opt => opt.DepartureCity.ToString())
                    );

            //POST请求的 Profile
            CreateMap<TouristRouteForCreationDto, TouristRoute>()
                .ForMember(
                    dest => dest.Id,
                    opt => opt.MapFrom(src => Guid.NewGuid())
                    );

            //PUT请求的 Profile
            CreateMap<TouristRouteForUpdateDto, TouristRoute>(); //把TouristRouteForUpdateDto映射到TouristRoute中

            CreateMap<TouristRoute, TouristRouteForUpdateDto>();
        }
    }
}
